package com.dashboard.domain;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "organizacao")
public class Organizacao implements Serializable
{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 7855739175877978848L;
	
	@Id
	@Column(name = "id_organizacao")
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;
	
	@Column(name = "nome")
	private String nome;
	
	@Column(name = "descricao")
	private String descricao;
	
	/**
	 * Construtor default.
	 */
	public Organizacao()
	{
		
	}
	
	/**
	 * Construtor parametrizado.
	 * 
	 * @param id - O identificador da Organiza&ccedil;&atilde;o
	 * @param name - O nome da Organiza&ccedil;&atilde;o
	 * @param description - A descri&ccedil;&atilde;o da Organiza&ccedil;&atilde;o
	 */
	public Organizacao(Long id, String name, String description)
	{
		this.id = id;
		this.nome = name;
		this.descricao = description;
	}

	/**
	 * @return the id
	 */
	public Long getId()
	{
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(Long id)
	{
		this.id = id;
	}

	/**
	 * @return the nome
	 */
	public String getNome()
	{
		return nome;
	}

	/**
	 * @param nome the nome to set
	 */
	public void setNome(String nome)
	{
		this.nome = nome;
	}

	/**
	 * @return the descricao
	 */
	public String getDescricao()
	{
		return descricao;
	}

	/**
	 * @param descricao the descricao to set
	 */
	public void setDescricao(String descricao)
	{
		this.descricao = descricao;
	}

	/**
	 * {@inheritDoc}
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode()
	{
		final int PRIME = 31;
		int result = 1;
		result = PRIME * result
				+ ((descricao == null) ? 0 : descricao.hashCode());
		result = PRIME * result + ((id == null) ? 0 : id.hashCode());
		result = PRIME * result + ((nome == null) ? 0 : nome.hashCode());
		return result;
	}

	/**
	 * {@inheritDoc}
	 * 
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) 
	{
		if (this == obj)
		{
			return true;
		}
		if (obj == null)
		{
			return false;
		}
		if (getClass() != obj.getClass())
		{
			return false;
		}
		
		Organizacao other = (Organizacao) obj;
		
		if (descricao == null) 
		{
			if (other.descricao != null)
			{
				return false;
			}
		} 
		else if (!descricao.equals(other.descricao))
		{
			return false;
		}
		if (id == null)
		{
			if (other.id != null)
			{
				return false;
			}
		} 
		else if (!id.equals(other.id))
		{
			return false;
		}
		if (nome == null) 
		{
			if (other.nome != null)
			{
				return false;
			}
		} 
		else if (!nome.equals(other.nome))
		{
			return false;
		}
		
		return true;
	}
}